package com.ltmonitor.service;

import java.util.List;

import com.ltmonitor.jt809.entity.VehicleRegisterInfo;
import com.ltmonitor.jt809.entity.DriverModel;
import com.ltmonitor.video.entity.VideoFileItem;
import com.ltmonitor.vo.GnssData;
import com.ltmonitor.vo.TakePhotoModel;
import com.ltmonitor.vo.WarnData;

/**
 * 从808模块转发到809模块的RMI服务接口
 * @author admin
 *
 */
public interface ITransferService {

	/**
	 * 转发实时数据
	 * @param gnssData
	 */
	public abstract void UpExgMsgRealLocation(GnssData gnssData);
	/**
	 * 转发终端对监听的应答
	 * @param plateNo
	 * @param plateColor
	 * @param result 终端的应答结果
	 */
	public abstract boolean UpCtrlMsgMonitorVehicleAck(String plateNo,
			int plateColor, byte result);
	/**
	 * 转发终端对紧急接入请求的应答
	 * @param plateNo
	 * @param plateColor
	 * @param result
	 */
	public abstract boolean UpCtrlMsgEmergencyMonitoringAck(String plateNo,
			int plateColor, byte result);
	/**
	 * 转发对终端下发文本信息指令的应答
	 * @param plateNo
	 * @param plateColor
	 * @param msgId
	 * @param result
	 */
	public abstract boolean UpCtrlMsgTextInfoAck(String plateNo, int plateColor,
			int msgId, byte result);
	/**
	 * 转发对行车记录仪指令的应答
	 * @param plateNo
	 * @param plateColor
	 * @param cmdType
	 * @param cmdData
	 */
	public abstract boolean UpCtrlMsgTakeTravelAck(String plateNo, int plateColor,
			byte cmdType, byte[] cmdData);
	/**
	 * 上报电子运行
	 * @param plateNo
	 * @param plateColor
	 * @param eContent  电子运单
	 */
	public abstract boolean UpExgMsgReportTakeEWayBill(String plateNo,
			int plateColor, String eContent);
	/**
	 * 转发对拍照指令的应答
	 * @param _photo 照片数据
	 */
	public abstract boolean UpCtrlMsgTakePhotoAck(TakePhotoModel _photo);
	/**
	 * 主链路是否连接成功
	 * @return
	 */
	public boolean isMainLinked();
	/**
	 * 从链路是否连接成功
	 * @return
	 */
	public boolean isSubLinked();

	/**
	 * 上传车辆注册信息
	 * @param vm
	 * @return
	 */
	boolean UpExgMsgRegister(VehicleRegisterInfo vm);
	/**
	 * 主动上报驾驶员身份
	 * 
	 * @param dm
	 * @return
	 */
	boolean UpExgMsgReportDriverInfo(DriverModel dm);
	/**
	 * 上报报警信息
	 * @param wd
	 * @return
	 */
	boolean UpWarnMsgAdptInfo(WarnData wd);
	/**
	 * 当收到终端的应答后，转发对上级平台的实时音视频请求应答
	 * @param plateNo
	 * @param plateColor
	 * @param result 0成功 1失败
	 * @param httpServerIp  http转发服务器的IP地址
	 * @param httpServerPort  http转发服务器的端口
	 * @return
	 */
    boolean UpRealVideoMsgStartUpAck(String plateNo, int plateColor,
                                     byte result, String httpServerIp, int httpServerPort);

	/**
	 *当收到终端的停止视频应答后，转发对对上级平台的实时音视频停止请求应答
	 * @param plateNo
	 * @param plateColor
	 * @param result
	 * @return
	 */
    boolean UpRealVideoMsgEndAck(String plateNo, int plateColor,
                                 byte result);

	/**
	 * 发送 主动上传音视频资源目录 数据
	 * @param plateNo
	 * @param plateColor
	 * @param videoFileItems 音视频资源目录数据
	 * @return
	 */
    boolean UpFileListMsg(String plateNo, int plateColor,
                          List<VideoFileItem> videoFileItems);
	/**
	 * 根据上级平台的查询音视频资源目录请求，应答音视频资源目录数据
	 * @param plateNo
	 * @param plateColor
	 * @param result
	 * @param videoFileItems
	 * @return
	 */
    boolean UpRealVideoFileListReqAck(String plateNo, int plateColor, int result,
                                      List<VideoFileItem> videoFileItems);

	/**
	 * 终端视频回放应答
	 * @param plateNo
	 * @param plateColor
	 * @param result
	 * @param videoServerIp
	 * @param port
	 * @return
	 */
    boolean UpPlayBackMsgStartUpAck(String plateNo, int plateColor,
                                    byte result, String videoServerIp, int port);

	/**
	 * 终端视频回放控制应答
	 * @param plateNo
	 * @param plateColor
	 * @param result
	 * @return
	 */
    boolean UpPlayBackMsgControlAck(String plateNo, int plateColor,
                                    byte result);

	/**
	 * 终端视频FTP下载应答
	 * @param plateNo
	 * @param plateColor
	 * @param result
	 * @param responseMsgSn
	 * @return
	 */
    boolean UpDownloadMsgStartUpAck(String plateNo, int plateColor,
                                    byte result, short responseMsgSn);

	/**
	 * 终端FTP下载完成应答
	 * @param plateNo
	 * @param plateColor
	 * @param result
	 * @param responseMsgSn
	 * @param _ip  FTP服务器IP
	 * @param _port  FTP服务端口
	 * @param _userName FTP账号和密码
	 * @param _password
	 * @param _filePath FTP指定目录路径
	 * @return
	 */
    boolean UpDownloadMsgEndInform(String plateNo, int plateColor, byte result,
                                   short responseMsgSn, String _ip, int _port, String _userName,
                                   String _password, String _filePath);
	/**
	 * 终端FTP下载控制应答
	 * @param plateNo
	 * @param plateColor
	 * @param result
	 * @return
	 */
    boolean UpDownloadMsgControlAck(String plateNo, int plateColor,
                                    byte result);

    /**
	 * 历史补报
	 * @param plateNo
	 * @param plateColor
	 * @param gnssDatas
	 * @return
	 */
	boolean UpExgMsgHistoryLocations(String plateNo,
			int plateColor, List<GnssData> gnssDatas);

}